﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Teenusekiht;
using System.ServiceModel;

public partial class Kohvik_EditMenu : System.Web.UI.Page
{
    IService1 sc;
    private List<ASP.EditMenuItem> editMenuItemUserControlList;
    int menuID = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        sc = new ChannelFactory<IService1>("Serv").CreateChannel();

        if (Request.QueryString["menu"] == null) Response.Redirect("~/Default.aspx");
        else if (int.TryParse(Request.QueryString["menu"], out menuID)) { }
        else Response.Redirect("~/Default.aspx");

        if (Session["sess"] == null) Session["sess"] = SessionStatic.CreateSession();
        SessionData sesDat = SessionStatic.GetData((int)Session["sess"]);
        bool saabMuuta = sc.TagastabMenuuMuutujad(menuID, sesDat.UserId, Rakendus.RAKENDUSE_KOOD);
        if (!saabMuuta)
        {
            ph_addMenuItem.Visible = false;
            ph_EditMenu.Controls.Clear();
            ph_EditMenu.Controls.Add(new Label() { Text = "Kasutaja toimingu tõrge.", CssClass = "failureNotification" });
        }
        else
        {
            string nimi = sc.MenuuNimetus(menuID, Rakendus.RAKENDUSE_KOOD);
            lblMenuNimetus.Text = nimi;
            Page.Title += nimi;
            ph_EditMenu.Visible = ph_addMenuItem.Visible = (nimi != "");
            kuvaLeht();
        }
    }

    protected void kuvaLeht()
    {
        editMenuItemUserControlList = new List<ASP.EditMenuItem>();

        KaupType[] kaubad = sc.AnnaKaubad(Rakendus.RAKENDUSE_KOOD).ToArray();

        if (!IsPostBack) // esimene laadimine
        {
            MenyyItem[] menuItems = sc.TagastaMenuuArtiklid(menuID, Rakendus.RAKENDUSE_KOOD);
            ph_EditMenu.Visible = (menuItems.Length != 0);
            hf_asjadeArv.Value = menuItems.Length.ToString();

            int[] myygiArtikliteIDd = menuItems.Select(m => m.Id).ToArray();
            SoodustusType[] soodustused = sc.AnnaSoodustused(myygiArtikliteIDd, Rakendus.RAKENDUSE_KOOD); // SOODUSTUSED

            foreach (MenyyItem item in menuItems)
            {
                ASP.EditMenuItem userControl = (ASP.EditMenuItem)LoadControl("~/UserControls/EditMenuItem.ascx");
                userControl.setFields(item.Id, item.MyygiartikliNimi, item.Hind, item.Kaup_ID, item.Kommentaar, soodustused.Where(s => s.MyygiArtikkel_ID == item.Id).ToArray(), 0);
                editMenuItemUserControlList.Add(userControl);
                panelEdit.Controls.Add(userControl);
            }
        }
        else
        {
            int asju = 0;
            int.TryParse(hf_asjadeArv.Value, out asju);
            for (int i = 0; i < asju; i++)
            {
                ASP.EditMenuItem usrControl = (ASP.EditMenuItem)LoadControl("~/UserControls/EditMenuItem.ascx");
                usrControl.test(kaubad);
                editMenuItemUserControlList.Add(usrControl);
                panelEdit.Controls.Add(usrControl);
            }
        }

        foreach (KaupType kaup in kaubad)
        {
            ddl_kaupID.Items.Add(new ListItem(kaup.Nimetus, "" + kaup.KaupID));
        }

        //string val = ddl_kaupID.SelectedValue;

        int[] myygiArtiklidOlemas = sc.TagastaMenuuArtiklid(menuID, Rakendus.RAKENDUSE_KOOD).Select(m => m.Id).ToArray();
        MyygiartikkelType[] myygiArtiklid = sc.AnnaMuugiartiklidMidaMenuusPole(myygiArtiklidOlemas, Rakendus.RAKENDUSE_KOOD).ToArray();
        foreach (MyygiartikkelType ma in myygiArtiklid)
        {
            ddl_Myygiartikkel.Items.Add(new ListItem(ma.Nimetus, "" + ma.MyygiArtikkelID));
        }
    }


    protected void btnMuuda_Click(object sender, EventArgs e)
    {
        bool check = true;
        foreach (ASP.EditMenuItem usrCtrl in editMenuItemUserControlList)
        {
            usrCtrl.getFields();
            check &= usrCtrl.IsValid;
        }
        lblCheck.Text = check ? "Menüü muudetud." : "";
        lblCheck.ForeColor = System.Drawing.Color.Green;
        if (check)
        {
            foreach (ASP.EditMenuItem usrCtrl in editMenuItemUserControlList)
            {
                sc.VahetaMenuuArtiklit(new MenyyItem()
                {
                    Id = usrCtrl.MyygiArtikliID,
                    MyygiartikliNimi = usrCtrl.MyygiArtikliNimetus,
                    Hind = usrCtrl.MyygiArtikliHind,
                    Kaup_ID = usrCtrl.KaupID,
                    Kommentaar = usrCtrl.MyygiArtikliKomm
                }, Rakendus.RAKENDUSE_KOOD);
            }
        }

    } // end btnMuuda_Click

    protected void btnLisa_Click(object sender, EventArgs e)
    {
        string nimetus = uusMenuItemNimi.Text, komm = uusMenuItemKomm.Text;
        int? hind = UserControls_EditMenuItem.parseHind(uusMenuItemHind.Text);
        if(hind != null) //if (int.TryParse(uusMenuItemHind.Text, out hind))
        {
            sc.LisaMenuuArtikkelMenuuse(new MenyyItem()
            {
                MyygiartikliNimi = nimetus,
                Hind = (int)hind,
                Kommentaar = komm,
                Kaup_ID = int.Parse(ddl_kaupID.SelectedValue)
            }, menuID, Rakendus.RAKENDUSE_KOOD);
            Response.Redirect("~/Kohvik/EditMenu.aspx?menu=" + menuID);
        }
        else lbl_uusMenuItemHindError.Text = "Sisesta hind arvuna! Näiteks 0,99";

    }

    protected void btnKustuta_Click(object sender, EventArgs e)
    {
        LinkedList<int> ids = new LinkedList<int>();
        foreach (ASP.EditMenuItem usrCtrl in editMenuItemUserControlList) 
        {
            if (usrCtrl.checkBoxChecked())
            {
                usrCtrl.getFields();
                ids.AddLast(usrCtrl.MyygiArtikliID);
            }
        }
        //string idStr = "";
        //foreach (int id in ids) idStr += id + " , ";
        bool success = sc.KustutaMenuuArtikkel(ids.ToArray(), Rakendus.RAKENDUSE_KOOD);
        
        if (success) Response.Redirect("~/Kohvik/EditMenu.aspx?menu=" + menuID);
        else { 
            lblCheck.Text = "Kustutamisel tekkis probleem.";
            lblCheck.ForeColor = System.Drawing.Color.Red;
        }
       
    }

    protected void btnLisaExist_Click(object sender, EventArgs e)
    {
        int myygiArtikliID = int.Parse(ddl_Myygiartikkel.SelectedValue);
        int? id = sc.LisaArtikkelMenuuse(myygiArtikliID, menuID, Rakendus.RAKENDUSE_KOOD);
        if (id != null) Response.Redirect("~/Kohvik/EditMenu.aspx?menu=" + menuID);
    }

    protected void btnLisaKaup_Click(object sender, EventArgs e)
    {
        string kaubaNimi = tbKaubaNimi.Text;
        int? id = sc.LisaKaup(kaubaNimi, Rakendus.RAKENDUSE_KOOD);
        if (id != null) Response.Redirect("~/Kohvik/EditMenu.aspx?menu=" + menuID);

    }

}
